<?php

class StatusParticipationManager
{
	private $_db;
	
	public function __construct(PDO $db)
	{
		$this->setDb($db);
	}
	
	public function setDb($db)
	{
		$this->_db = $db;
	}
	
	public function add(StatusParticipation $status)
	{
		//Fonction qui va ajouter un statut dans la table statusparticipation
		$reqInsert = $this->_db->prepare("INSERT INTO statusparticipation SET name= :name");
		$reqInsert->bindValue(":name", $status->name());
		$reqInsert->execute();
		$status->hydrate(array(
			'id' => $this->_db->lastInsertId()
		));
	}
	public function delete(StatusParticipation $status)
	{
		//Fonction qui va supprimer un statut dans la table statusparticipation
		$reqDelete = $this->_db->prepare("DELETE FROM statusparticipation WHERE id= :id");
		$reqDelete->bindValue(":id", $status->id());
		$reqDelete->execute();
	}
	public function update(StatusParticipation $status)
	{
		//Fonction qui va mettre à jour un statut dans la table statusparticipation
		$reqUpdate = $this->_db->prepare("UPDATE statusparticipation SET name= :name WHERE id= :id");
		$reqUpdate->bindValue(":id", $status->id(), PDO::PARAM_INT);
		$reqUpdate->bindValue(":name", $status->name(), PDO::PARAM_STR);
		$reqUpdate->execute();
	}
	public function get($search)
	{
		//Fonction qui va chercher un statut dans la table statusparticipation à partir du critère de recherche search
		if(is_int($search))
		{
			$reqSelect = $this->_db->prepare("SELECT * FROM statusparticipation WHERE id= :id");
			$reqSelect->bindValue(":id", $search);
			$reqSelect->execute();
			$status = $reqSelect->fetch(PDO::FETCH_ASSOC);
			return new StatusParticipation($status);
		}
		if(is_string($search))
		{
			$reqSelect = $this->_db->prepare("SELECT * FROM statusparticipation WHERE name LIKE %:name%");
			$reqSelect->bindValue(":name", $search);
			$reqSelect->execute();
			$status = $reqSelect->fetch(PDO::FETCH_ASSOC);
			return new StatusParticipation($status);
		}
	}

}